﻿
// MainFrm.cpp: CMainFrame 类的实现
//

#include "pch.h"
#include "framework.h"
#include "SchoolGuide40.h"

#include "MainFrm.h"
#include "SearchDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


extern fstream runlog(logname, ios::out);//开启日志;
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_WM_CREATE()
	ON_WM_TIMER()
	ON_WM_GETMINMAXINFO()
	//ON_COMMAND(ID_SEARCH, &CMainFrame::OnSearch)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // 状态行指示器(就绪）
	ID_INDICATOR_CLOCK,     // 添加指示器，用于显示时间信息
	ID_INDICATOR_CAPS,      // 坐标：
	ID_INDICATOR_NUM,       // 坐标信息
	ID_INDICATOR_SCRL,      // 进度条
	IDS_RUNINFO,            //（进度条）
	IDS_TIMEOUT,            //定时器
	IDS_RUNINFO2,            //
};

// CMainFrame 构造/析构

CMainFrame::CMainFrame() noexcept
{
	// TODO: 在此添加成员初始化代码
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	//if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
	//	!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	//{
	//	TRACE0("未能创建工具栏\n");
	//	return -1;      // 未能创建
	//}

	if (!m_wndStatusBar.Create(this))
	{
		TRACE0("未能创建状态栏\n");
		return -1;      // 未能创建
	}
	m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
	/*修改各状态栏的宽度*/
	m_wndStatusBar.SetPaneInfo(0, ID_SEPARATOR, SBPS_NORMAL, 150); //SBPS_NOBORDERS没有3-D边框，设置指定显示面板一个 索引id，新的ID，风格，和宽度
	m_wndStatusBar.SetPaneInfo(1, ID_INDICATOR_CLOCK, SBPS_NORMAL, 150);//修改宽度
	m_wndStatusBar.SetPaneInfo(2, NULL, SBPS_NORMAL, 80);  //SBPS_DISABLED不绘制文本,SBPS_POPOUT不显示文字
	m_wndStatusBar.SetPaneInfo(3, ID_INDICATOR_NUM, SBPS_NORMAL, 150);
	m_wndStatusBar.SetPaneInfo(4, NULL, SBPS_NORMAL, 200);
	m_wndStatusBar.SetPaneInfo(5, NULL, SBPS_NORMAL, 200);  //显示进度条
	m_wndStatusBar.SetPaneInfo(6, IDS_TIMEOUT, SBPS_NORMAL, 200);
	m_wndStatusBar.SetPaneInfo(7, NULL, SBPS_NORMAL, 200);

	//m_wndStatusBar.SetPaneText(0, _T("华中大导航系统"));
	m_wndStatusBar.SetPaneText(1, _T("系统时间"));
	m_wndStatusBar.SetPaneText(2, _T("坐标："));
	//m_wndStatusBar.SetPaneText(3, _T("(x=？,y=？)"));
	m_wndStatusBar.SetPaneText(4, _T("运行信息"));
	m_wndStatusBar.SetPaneText(5, _T("运行信息"));

	// TODO: 如果不需要可停靠工具栏，则删除这三行
	/*m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);*/

	/* 设置标题 右侧标题,左侧标题在属性中修改*/
	SetTitle(TEXT("2020-11-6"));
	/* 设置窗口大小 */
	//MoveWindow(0, 0, 1200, 600);
	/* 设置窗口居中*/
	CenterWindow();
	SetTimer(1, 1000, NULL);//添加定时器，开始时钟功能

	return 0;
}

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,
	CCreateContext* pContext)
{
	return m_wndSplitter.Create(this,
		2, 2,               // TODO: 调整行数和列数
		CSize(1000, 1000),      // TODO: 调整最小窗格大小
		pContext);
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: 在此处通过修改
	//  CREATESTRUCT cs 来修改窗口类或样式
	cs.style = WS_OVERLAPPEDWINDOW;
	CRect rect;
	//rect.SetRect(0, 0, 1672, 820);
	//AdjustWindowRectEx(&rect, cs.style, TRUE, cs.dwExStyle);
	cs.cx = 1672;
	cs.cy = 820;
	cs.lpszName = _T("华中大校园导航");

	runlog << "开启日志" << endl;

	return TRUE;
}

// CMainFrame 诊断

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}
#endif //_DEBUG


// CMainFrame 消息处理程序

void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CTime time = CTime::GetCurrentTime();//获取当前时间
	CString strTime = time.Format("%H: %M: %S");//转换时间格式
	switch (nIDEvent)
	{
	case 1: ///处理ID为1的定时器
		m_wndStatusBar.SetPaneText(1, strTime);//设置显示时间
		break;
	case 2: ///处理ID为2的定时器
		//MessageBox("定时器时间到!", "提示", MB_OK);
		break;
	}
	CFrameWnd::OnTimer(nIDEvent);
}

/* 设置窗口最大化、最小化*/
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CRect   rectWindow;
	GetWindowRect(&rectWindow);
	CRect   rectClient;
	GetClientRect(&rectClient);
	int   nWidthOffset = rectWindow.Width() - rectClient.Width();
	int   nHeightOffset = rectWindow.Height() - rectClient.Height();
	lpMMI->ptMaxTrackSize.x = 1672 + nWidthOffset;
	lpMMI->ptMaxTrackSize.y = 820 + nHeightOffset;
	lpMMI->ptMinTrackSize.x = 700;
	lpMMI->ptMinTrackSize.y = 500 ;
	CFrameWnd::OnGetMinMaxInfo(lpMMI);
}


//void CMainFrame::OnSearch()
//{
//	// TODO: 在此添加命令处理程序代码
//	CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
//	//MessageBox("导入背景图失败!", "提示", MB_OK);
//	pFrame->m_wndStatusBar.SetPaneText(5, "搜索路径");
//
//	SearchDialog find_point;
//	find_point.DoModal();
//}
